﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;//biblioteca do sql
using System.Data;//para usa de procedure
using Sistema.Modelo;//pacote modelo
using Sistema.Dao;//pacote Dao para converter mensagem

namespace Sistema.Dao
{
    class PessoasDao
    {
        Mensagens men = new Mensagens();
        SqlDataAdapter dr;
        String Mensagem;
        ///
        ///
        ///
        ///
        public String getMensagem()//metodo de retorno de resultado de pesquisa
        {
            return Mensagem;
        }
        ///
        ///
        ///
        ///
        public SqlDataAdapter getSelect()//metodo de retorno de resultado de pesquisa
        {
            return dr;
        }
        ///
        ///
        ///
        ///
        public void SelecionarPessoa(String Busca, int selecao)
        {
            try
            {
                String[] stringconecao = new String[6];//string em array para armazenar mais de um tipo de selecao
                stringconecao[0] = "SELECT * FROM Pessoas ;";
                stringconecao[1] = "SELECT COUNT(Pessoa_Codigo)FROM Pessoas;";
                stringconecao[2] = "SELECT * FROM Bairro WHERE Bairro_Codigo like '%" + Busca + "%' ORDER BY Bairro_Nome;";
                stringconecao[3] = "SELECT * FROM Bairro WHERE Cidade_Codigo like '%" + Busca + "%' ORDER BY Bairro_Nome;";
                stringconecao[4] = "SELECT * FROM Bairro WHERE Bairro_Nome like '%" + Busca + "%' ORDER BY Bairro_Nome;";
                stringconecao[5] = "SELECT * FROM Bairro WHERE Bairro_Data_Cadastro like '%" + Busca + "%' ORDER BY Bairro_Nome;";

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL = stringconecao[selecao];
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);
                this.dr = new SqlDataAdapter(crm);
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }
        }
        ///
        ///
        ///
        ///
        public void ExecutarProcedimentoPessoa(PessoasMod a, int Procedimento)
        {
            try
            {
                int Pessoa_Codigo = Convert.ToInt16(null);
                int Pais_Codigo = Convert.ToInt16(null);
                int Estado_Codigo = Convert.ToInt16(null);
                int Cidade_Codigo = Convert.ToInt16(null);
                int Bairro_Codigo = Convert.ToInt16(null);
                int Endereco_Codigo = Convert.ToInt16(null);
                String Pessoa_Endereco_Numero = null;
                String Pessoa_Endereco_Complemento = null;
                int Tipo_Pessoa_Codigo = Convert.ToInt16(null);
                String Pessoa_Nome_Fantasia = null;
                String Pessoa_Rasao_Social = null;
                decimal Pessoa_CNPJ = Convert.ToDecimal(null);
                decimal Pessoa_CPF = Convert.ToDecimal(null);
                String Pessoa_RG = null;
                decimal Pessoa_Inscricao_Estadual = Convert.ToDecimal(null);
                String Pessoa_Suframa = null;
                String Pessoa_Contato = null;
                DateTime Pessoa_Data_Nascimento = Convert.ToDateTime(null);
                String Pessoa_Naturalidade = null;
                String Pessoa_Pai = null;
                String Pessoa_Mae = null;
                String Pessoa_Conjugue = null;
                String Pessoa_Email = null;
                String Pessoa_Sexo = null;
                String Pessoa_Foto = null;
                String Pessoa_Google = null;
                String Pessoa_Skyp = null;
                String Pessoa_Istagran = null;
                String Pessoa_Facebook = null;
                String Pessoa_Pagina_Web = null;
                decimal Pessoa_Renda_Mensal = Convert.ToDecimal(null);
                String Pessoa_Profissao = null;
                decimal Pessoa_Fax = Convert.ToDecimal(null);
                String Pessoa_Referencia_Comerciai_1 = null;
                String Pessoa_Referencia_Comerciai_2 = null;
                String Pessoa_Referencia_Comercial_3 = null;
                String Pessoa_Referencia_Bancaria_1 = null;
                String Pessoa_Referencia_Bancaria_2 = null;
                String Pessoa_Referencia_Bancaria_3 = null;
                decimal Pessoa_Referencia_Telefone_1 = Convert.ToDecimal(null);
                decimal Pessoa_Referencia_Telefone_2 = Convert.ToDecimal(null);
                decimal Pessoa_Referencia_Telefone_3 = Convert.ToDecimal(null);
                decimal Pessoa_Comissao_Avista = Convert.ToDecimal(null);
                decimal Pessoa_Comissao_Apraso = Convert.ToDecimal(null);
                String Pessoa_Estado_Civil = null;
                DateTime Pessoa_Dia_Vencimento = Convert.ToDateTime(null);
                decimal Pessoa_Limite_Credito = Convert.ToDecimal(null);
                DateTime Pessoa_Data_Cadastro = Convert.ToDateTime(null);
                
                int Operacao = Procedimento;
                int NovoCodigo = Convert.ToInt16(null);
                int Retorno = 0;


                if (Procedimento == 1)
                {//Cadastrar

                    Pais_Codigo = a.Pais_Codigo;
                    Estado_Codigo = a.Estado_Codigo;
                    Cidade_Codigo = a.Cidade_Codigo;
                    Bairro_Codigo = a.Bairro_Codigo;
                    Endereco_Codigo = a.Endereco_Codigo;
                    Pessoa_Endereco_Numero = a.Pessoa_Endereco_Numero;
                    Pessoa_Endereco_Complemento = a.Pessoa_Endereco_Complemento;
                    Tipo_Pessoa_Codigo = a.Tipo_Pessoa_Codigo;
                    Pessoa_Nome_Fantasia = a.Pessoa_Nome_Fantasia;
                    Pessoa_Rasao_Social = a.Pessoa_Rasao_Social;
                    Pessoa_CNPJ = a.Pessoa_CNPJ;
                    Pessoa_CPF = a.Pessoa_CPF;
                    Pessoa_RG = a.Pessoa_RG;
                    Pessoa_Inscricao_Estadual = a.Pessoa_Inscricao_Estadual;
                    Pessoa_Suframa = a.Pessoa_Suframa;
                    Pessoa_Contato = a.Pessoa_Contato;
                    Pessoa_Data_Nascimento = a.Pessoa_Data_Nascimento;
                    Pessoa_Naturalidade = a.Pessoa_Naturalidade;
                    Pessoa_Pai = a.Pessoa_Pai;
                    Pessoa_Mae = a.Pessoa_Mae;
                    Pessoa_Conjugue = a.Pessoa_Conjugue;
                    Pessoa_Email = a.Pessoa_Email;
                    Pessoa_Sexo = a.Pessoa_Sexo;
                    Pessoa_Foto = a.Pessoa_Foto;
                    Pessoa_Google = a.Pessoa_Google;
                    Pessoa_Skyp = a.Pessoa_Skyp;
                    Pessoa_Istagran = a.Pessoa_Istagran;
                    Pessoa_Facebook = a.Pessoa_Facebook;
                    Pessoa_Pagina_Web = a.Pessoa_Pagina_Web;
                    Pessoa_Renda_Mensal = a.Pessoa_Renda_Mensal;
                    Pessoa_Profissao = a.Pessoa_Profissao;
                    Pessoa_Fax = a.Pessoa_Fax;
                    Pessoa_Referencia_Comerciai_1 = a.Pessoa_Referencia_Comerciai_1;
                    Pessoa_Referencia_Comerciai_2 = a.Pessoa_Referencia_Comerciai_2;
                    Pessoa_Referencia_Comercial_3 = a.Pessoa_Referencia_Comercial_3;
                    Pessoa_Referencia_Bancaria_1 = a.Pessoa_Referencia_Bancaria_1;
                    Pessoa_Referencia_Bancaria_2 = a.Pessoa_Referencia_Bancaria_2;
                    Pessoa_Referencia_Bancaria_3 = a.Pessoa_Referencia_Bancaria_3;
                    Pessoa_Referencia_Telefone_1 = a.Pessoa_Referencia_Telefone_1;
                    Pessoa_Referencia_Telefone_2 = a.Pessoa_Referencia_Telefone_2;
                    Pessoa_Referencia_Telefone_3 = a.Pessoa_Referencia_Telefone_3;
                    Pessoa_Comissao_Avista = a.Pessoa_Comissao_Avista;
                    Pessoa_Comissao_Apraso = a.Pessoa_Comissao_Apraso;
                    Pessoa_Estado_Civil = a.Pessoa_Estado_Civil;
                    Pessoa_Dia_Vencimento = a.Pessoa_Dia_Vencimento;
                    Pessoa_Limite_Credito = a.Pessoa_Limite_Credito;
                    Pessoa_Data_Cadastro = a.Pessoa_Data_Cadastro;



                }
                ////////////////////
                else if (Procedimento == 2)
                {//Alterar
                    Bairro_Codigo = a.Bairro_Codigo;
                    Cidade_Codigo = a.Cidade_Codigo;
                  //  Bairro_Nome = a.Bairro_Nome;
                }
                ////////////////////
                else if (Procedimento == 3)
                {//Excluir
                    Bairro_Codigo = a.Bairro_Codigo;
                    Cidade_Codigo = a.Cidade_Codigo;
                   // Bairro_Nome = a.Bairro_Nome;
                }
                ////////////////////

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL;//variavel passa o nome da procidore
                mSQL = "SP_Update_Pessoas";
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);

                crm.CommandType = CommandType.StoredProcedure;
                crm.Parameters.Add("@Pais_Codigo", SqlDbType.VarChar).Value = Pais_Codigo;
                crm.Parameters.Add("@Estado_Codigo", SqlDbType.VarChar).Value = Estado_Codigo;
                crm.Parameters.Add("@Cidade_Codigo", SqlDbType.VarChar).Value = Cidade_Codigo;
                crm.Parameters.Add("@Bairro_Codigo", SqlDbType.VarChar).Value = Bairro_Codigo;
                crm.Parameters.Add("@Endereco_Codigo", SqlDbType.VarChar).Value = Endereco_Codigo;
                crm.Parameters.Add("@Pessoa_Endereco_Numero", SqlDbType.VarChar).Value = Pessoa_Endereco_Numero;
                crm.Parameters.Add("@Pessoa_Endereco_Complemento", SqlDbType.VarChar).Value = Pessoa_Endereco_Complemento;
                crm.Parameters.Add("@Tipo_Pessoa_Codigo", SqlDbType.VarChar).Value = Tipo_Pessoa_Codigo;
                crm.Parameters.Add("@Pessoa_Nome_Fantasia", SqlDbType.VarChar).Value = Pessoa_Nome_Fantasia;
                crm.Parameters.Add("@Pessoa_Rasao_Social", SqlDbType.VarChar).Value = Pessoa_Rasao_Social;
                crm.Parameters.Add("@Pessoa_CNPJ", SqlDbType.VarChar).Value = Pessoa_CNPJ;
                crm.Parameters.Add("@Pessoa_CPF", SqlDbType.VarChar).Value = Pessoa_CPF;
                crm.Parameters.Add("@Pessoa_RG", SqlDbType.VarChar).Value = Pessoa_RG;
                crm.Parameters.Add("@Pessoa_Inscricao_Estadual", SqlDbType.VarChar).Value = Pessoa_Inscricao_Estadual;
                crm.Parameters.Add("@Pessoa_Suframa", SqlDbType.VarChar).Value = Pessoa_Suframa;
                crm.Parameters.Add("@Pessoa_Contato", SqlDbType.VarChar).Value = Pessoa_Contato;
                crm.Parameters.Add("@Pessoa_Data_Nascimento", SqlDbType.VarChar).Value = Pessoa_Data_Nascimento;
                crm.Parameters.Add("@Pessoa_Naturalidade", SqlDbType.VarChar).Value = Pessoa_Naturalidade;
                crm.Parameters.Add("@Pessoa_Pai", SqlDbType.VarChar).Value = Pessoa_Pai;
                crm.Parameters.Add("@Pessoa_Mae", SqlDbType.VarChar).Value = Pessoa_Mae;
                crm.Parameters.Add("@Pessoa_Conjugue", SqlDbType.VarChar).Value = Pessoa_Conjugue;
                crm.Parameters.Add("@Pessoa_Email", SqlDbType.VarChar).Value = Pessoa_Email;
                crm.Parameters.Add("@Pessoa_Sexo", SqlDbType.VarChar).Value = Pessoa_Sexo;
                crm.Parameters.Add("@Pessoa_Foto", SqlDbType.VarChar).Value = Pessoa_Foto;
                crm.Parameters.Add("@Pessoa_Google", SqlDbType.VarChar).Value = Pessoa_Google;
                crm.Parameters.Add("@Pessoa_Skyp", SqlDbType.VarChar).Value = Pessoa_Skyp;
                crm.Parameters.Add("@Pessoa_Istagran", SqlDbType.VarChar).Value = Pessoa_Istagran;
                crm.Parameters.Add("@Pessoa_Facebook", SqlDbType.VarChar).Value = Pessoa_Facebook;
                crm.Parameters.Add("@Pessoa_Pagina_Web", SqlDbType.VarChar).Value = Pessoa_Pagina_Web;
                crm.Parameters.Add("@Pessoa_Renda_Mensal", SqlDbType.VarChar).Value = Pessoa_Renda_Mensal;
                crm.Parameters.Add("@Pessoa_Profissao", SqlDbType.VarChar).Value = Pessoa_Profissao;
                crm.Parameters.Add("@Pessoa_Fax", SqlDbType.VarChar).Value = Pessoa_Fax;
                crm.Parameters.Add("@Pessoa_Referencia_Comerciai_1", SqlDbType.VarChar).Value = Pessoa_Referencia_Comerciai_1;
                crm.Parameters.Add("@Pessoa_Referencia_Comerciai_2", SqlDbType.VarChar).Value = Pessoa_Referencia_Comerciai_2;
                crm.Parameters.Add("@Pessoa_Referencia_Comercial_3", SqlDbType.VarChar).Value = Pessoa_Referencia_Comercial_3;
                crm.Parameters.Add("@Pessoa_Referencia_Bancaria_1", SqlDbType.VarChar).Value = Pessoa_Referencia_Bancaria_1;
                crm.Parameters.Add("@Pessoa_Referencia_Bancaria_2", SqlDbType.VarChar).Value = Pessoa_Referencia_Bancaria_2;
                crm.Parameters.Add("@Pessoa_Referencia_Bancaria_3", SqlDbType.VarChar).Value = Pessoa_Referencia_Bancaria_3;
                crm.Parameters.Add("@Pessoa_Referencia_Telefone_1", SqlDbType.VarChar).Value = Pessoa_Referencia_Telefone_1;
                crm.Parameters.Add("@Pessoa_Referencia_Telefone_2", SqlDbType.VarChar).Value = Pessoa_Referencia_Telefone_2;
                crm.Parameters.Add("@Pessoa_Referencia_Telefone_3", SqlDbType.VarChar).Value = Pessoa_Referencia_Telefone_3;
                crm.Parameters.Add("@Pessoa_Comissao_Avista", SqlDbType.VarChar).Value = Pessoa_Comissao_Avista;
                crm.Parameters.Add("@Pessoa_Comissao_Apraso", SqlDbType.VarChar).Value = Pessoa_Comissao_Apraso;
                crm.Parameters.Add("@Pessoa_Estado_Civil", SqlDbType.VarChar).Value = Pessoa_Estado_Civil;
                crm.Parameters.Add("@Pessoa_Dia_Vencimento", SqlDbType.VarChar).Value = Pessoa_Dia_Vencimento;
                crm.Parameters.Add("@Pessoa_Limite_Credito", SqlDbType.VarChar).Value = Pessoa_Limite_Credito;
                crm.Parameters.Add("@Pessoa_Data_Cadastro", SqlDbType.VarChar).Value = Pessoa_Data_Cadastro;
              
                crm.Parameters.Add("@Operacao", SqlDbType.VarChar).Value = Operacao;
                crm.Parameters.Add("@Novocodigo", SqlDbType.VarChar).Value = NovoCodigo;
                crm.Parameters.Add("@Retorno", SqlDbType.VarChar).Value = "";

                var returnParameter = crm.Parameters.Add("@Retorno", SqlDbType.Int);//comando para selecionar o retorno da procedimento
                returnParameter.Direction = ParameterDirection.ReturnValue;//retorno do procedimento

                crm.ExecuteNonQuery();
                Mensagem = men.getGerarMensagem(returnParameter.Scale.ToString()/*converte a mensagem recebida*/);//recebendo a variavel
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }

        }

    }
}
